Nominal Typing
異なるクラスのオブジェクトは異なる型として扱われる
例えば Java は Nominal Typing
code:Java
class FirstName {
String value;
FirstName(String value) {
this.value = value;
}
}
class LastName {
String value;
LastName(String value) {
this.value = value;
}
}
class Main {
static void callName(FirstName name) {
System.out.println(name.value);
}
public static void main(String[] argv) {
callName(new FirstName("takeshi")); // OK
callName(new LastName("gouda")); // Error!
}
}
この callName に LastName 型を渡すとエラーになる